iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Mobile Development

Swift大航道-啟航篇系列 第 16

swift tableview內建函式-trailingSwipeActionsConfigurationForRowAt

  • 分享至 

  • xImage
  •  

前面我們學了realm資料庫基本的使用還有tableview的建立,今天的我們會結合前面學習到的資料庫和tableview來跟大家分享,並延伸新的東西!

trailingSwipeActionsConfigurationForRowAt

這個函式是tableview內建的喔,就是可以讓tableview裡面的cell做滑動喔,可以從右邊往左滑動喔!,並多出一個小方塊做操作,如下圖,那我們來看跟資料庫結合使用的例子吧
截圖 2024-09-14 下午3.03.12

func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
        let deleteAction = UIContextualAction(style: .destructive, title: "delete") { (_, _, completionHandler) in
            let realm = try! Realm()
            // 比較與原本的資料數量是否一致
            if indexPath.row < self.MessageArray.count{
                self.deleteArr_cell = self.MessageArray[indexPath.row]
                let edit_CurrentTime = self.deleteArr_cell?.CurrenTime
                // 抓取要刪除的資料
                let delete_cell = realm.objects(MessageBoard.self).where{$0.CurrenTime == edit_CurrentTime ?? ""}[0]
                // 刪除
                try! realm.write{
                    realm.delete(delete_cell)
                }
                self.MessageArray.remove(at: indexPath.row)
                self.tbview.deleteRows(at: [indexPath], with: .automatic)
                //self.tbview.reloadData()
                //這邊不用從新更新資料庫的原因是因為deleteRows(at: [indexPath]已經更新過了
            }
            completionHandler(true)
        }
        return UISwipeActionsConfiguration(actions: [deleteAction])
    }

這邊我做的動作是刪除,所以我需要先打開資料庫,並撈取那個cell的資料,然後做刪除,最後再告訴系統已經完成這個動作了!

結論

今天我們又學習了更多swift內建的函式,並看了一個資料庫結合tableview的例子,又更暸解tableview的使用方式了!今天學習了從右邊滑到左邊的,明天會跟大家分享左邊滑到右邊的喔!各位明天見。


上一篇
swift realm資料庫基本使用
下一篇
swift 內建tableview函式-leadingSwipeActionsConfigurationForRowAt
系列文
Swift大航道-啟航篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言